import sys
import os
sys.path.insert(0, os.path.abspath('../'))
sys.path.insert(0, os.path.abspath('../../'))
sys.path.insert(0, os.path.abspath('/home/hm-tlacherm/qlm_notebooks/notebooks_1.2.1/notebooks/master_thesis_qaoa/'))
sys.path.insert(0, os.path.abspath('/home/hm-tlacherm/qlm_notebooks/notebooks_1.2.1/notebooks/master_thesis_qaoa/ibm/'))
sys.path.insert(0, os.path.abspath('/home/hm-tlacherm/qlm_notebooks/notebooks_1.2.1/notebooks/master_thesis_qaoa/ibm/landscape/'))
sys.path.insert(0, os.path.abspath('/home/hm-tlacherm/qlm_notebooks/notebooks_1.2.1/notebooks/master_thesis_qaoa/ibm/landscape/simulator/'))
import numpy as np
import qiskit
provider = qiskit.IBMQ.load_account()
from qiskit import Aer
from qiskit.utils import QuantumInstance
from qiskit_optimization.algorithms import MinimumEigenOptimizer
from qiskit.algorithms import QAOA
from shared.QiskitMaxcut import *
from ibm.ibm_parameters import *
from matplotlib import pyplot as plt
%matplotlib inline
from ibm_landscape_processes import *
%load_ext autoreload
%autoreload 2
# ---- Define graph and MaxCut ----
graph = generate_butterfly_graph(with_weights=False)
opt_max_cut = -4
max_cut = Maxcut(graph, opt_max_cut)
max_cut_qubo = max_cut.to_qubo()
max_cut.draw()
from qiskit_optimization.algorithms import GoemansWilliamsonOptimizer
optimizer = GoemansWilliamsonOptimizer(5)
result = optimizer.solve(max_cut_qubo)
mean, distribution = max_cut.analyse(result, print_output=True)
max_cut.plot_histogram(distribution, mean)
optimal function value: 4.0 optimal value: [0 0 0 0 1] status: SUCCESS 00001: value: -4.000, probability: 25.0% 01011: value: -4.000, probability: 25.0% 00101: value: -4.000, probability: 25.0% 00011: value: -4.000, probability: 25.0% Expectation Value: -4.0 Highest Exp.Value: -4 with 100.0 % Lowest Exp.Value: -4 with 100.0 % Highest Probability: -4 with 100.0 % Ratio r: nan Approiximation ratio: 1.0 MSE: 0.0 RMSE: 0.0
from landscape_helper import *
landscape_results_filename = f"landscape_simulator_{graph.name}_results.npy"
landscape = load_landscape_data(landscape_results_filename, max_cut)
Landscape does not exists, start calculating.. Row 0 Row 1 Row 2 Row 3 Row 4 Row 5 Row 6 Row 7 Row 8 Row 9 Row 10 Row 11 Row 12 Row 13 Row 14 Row 15 Row 16 Row 17 Row 18 Row 19 Row 20 Row 21 Row 22 Row 23 Row 24 Row 25 Row 26 Row 27 Row 28 Row 29 Row 30 Row 31 Row 32 Row 33 Row 34 Row 35 Row 36 Row 37 Row 38 Row 39 Row 40 Row 41 Row 42 Row 43 Row 44 Row 45 Row 46 Row 47 Row 48 Row 49 Row 50 Row 51 Row 52 Row 53 Row 54 Row 55 Row 56 Row 57 Row 58 Row 59 Row 60 Row 61 Row 62
min_beta, min_gamma, min_exp = describe_landscape(landscape)
Landscape mean: -2.63 Min Exp.Value: -3.94 Min. Beta: 1.26, Min. Gamma: -2.54
from plot_helper import *
# Plot landscape in 3D
plot_landscape_3d(landscape)
# Plot Heatmap
heatmap = plot_heatmap(landscape)
heatmap = display_minimum(heatmap, min_gamma, min_beta, min_exp)
from tqa import calculate_tqa
p = 1
tqa_initial_points = calculate_tqa(graph, p)
TQA: Beta: [1.26507538], Gamma: [1.26507538] (p=1)
from qaoa_helper import *
qnSpsa = QNSPSA(calculate_fidelity(create_qaoa(), max_cut_qubo), maxiter=50)
optimizers = [
('COBYLA',COBYLA(maxiter=50)),
('SPSA', SPSA(maxiter=50)),
('QNSPSA', qnSpsa),
]
for optimizer_tuple in optimizers:
optimizer_name, optimizer = optimizer_tuple
# create qaoa
qaoa = create_qaoa(optimizer = optimizer,
reps=p,
initial_point=tqa_initial_points,
with_callback=True
)
# run qaoa
result, optimal_parameters, optimizer_history = run_qaoa_with_callback(qaoa, max_cut_qubo)
# analyse results
print(f"{optimizer_name} Optimizer")
mean, distribution = max_cut.analyse(result, print_output=True)
max_cut.plot_histogram(distribution, mean)
optimizer_history[2][-1] = mean
print()
# Display Optimizer Results
counts, energy_values, maxcut_values, optimizer_gammas, optimizer_betas = optimizer_history
display_optimizer_path(heatmap, optimizer_gammas, optimizer_betas, maxcut_values, optimizer_name)
# Plot Optimizer History MaxCut Evaluation # Values from landscape -> real values may deviate
plot_optimizer_maxcut_history(counts, maxcut_values, optimizer_name)
# Plot Optimizer History Energy Evaluation -> not MaxCutMean!
plot_optimizer_energy_history(counts, energy_values, optimizer_name)
COBYLA Optimizer optimal function value: -4.0 optimal value: [1. 1. 0. 0. 0.] status: SUCCESS Number of samples (32) is too large to display. Skip. Expectation Value: -3.9092499999999992 Highest Exp.Value: 0 with 1.0999999999999999 % Lowest Exp.Value: -4 with 96.562 % Highest Probability: -4 with 96.562 % Ratio r: 0.9773124999999998 Approiximation ratio: 0.9773124999999998 MSE: 6.311902229166663 RMSE: 2.5123499416217205
SPSA Optimizer optimal function value: -4.0 optimal value: [1. 1. 0. 0. 0.] status: SUCCESS Number of samples (32) is too large to display. Skip. Expectation Value: -3.9337499999999994 Highest Exp.Value: 0 with 0.7374999999999999 % Lowest Exp.Value: -4 with 97.425 % Highest Probability: -4 with 97.425 % Ratio r: 0.9834374999999999 Approiximation ratio: 0.9834374999999999 MSE: 6.406055729166664 RMSE: 2.531018713713248
QNSPSA Optimizer optimal function value: -4.0 optimal value: [1. 1. 0. 0. 0.] status: SUCCESS Number of samples (32) is too large to display. Skip. Expectation Value: -3.9335 Highest Exp.Value: 0 with 0.6125 % Lowest Exp.Value: -4 with 97.288 % Highest Probability: -4 with 97.288 % Ratio r: 0.983375 Approiximation ratio: 0.983375 MSE: 6.405088916666666 RMSE: 2.5308277137463677
eval_num = 50
max_p = 10
all_results = {}
from qaoa_helper import *
qaoa_p_means = []
qaoa_p_ratios = []
qaoa_p_approx_ratios = []
for p in range(1,max_p+1):
m, r, ar = start_qaoa_evaluation(max_cut, eval_num=eval_num, reps=p)
qaoa_p_means.append(m)
qaoa_p_ratios.append(r)
qaoa_p_approx_ratios.append(ar)
all_results["QAOA"] = [qaoa_p_means, qaoa_p_ratios, qaoa_p_approx_ratios]
p=1: .................................................. p=2: .................................................. p=3: .................................................. p=4: .................................................. p=5: .................................................. p=6: .................................................. p=7: .................................................. p=8: .................................................. p=9: .................................................. p=10: ..................................................
display_boxplots_results(qaoa_p_means, qaoa_p_ratios, qaoa_p_approx_ratios)
from qaoa_helper import *
tqa_p_means = []
tqa_p_ratios = []
tqa_p_approx_ratios = []
tqa_init_points = []
for p in range(1,max_p+1):
tqa_initial_points = calculate_tqa(graph, p)
m, r, ar = start_qaoa_evaluation(max_cut, eval_num=eval_num, reps=p, init_points=tqa_initial_points)
tqa_p_means.append(m)
tqa_p_ratios.append(r)
tqa_p_approx_ratios.append(ar)
tqa_init_points.append(tqa_initial_points)
all_results["TQA QAOA"] = [tqa_p_means, tqa_p_ratios, tqa_p_approx_ratios, tqa_init_points]
TQA: Beta: [1.26507538], Gamma: [1.26507538] (p=1) p=1: .................................................. TQA: Beta: [1.41180905 0.47060302], Gamma: [0.47060302 1.41180905] (p=2) p=2: .................................................. TQA: Beta: [0.45240089 0.27144054 0.09048018], Gamma: [0.09048018 0.27144054 0.45240089] (p=3) p=3: .................................................. TQA: Beta: [0.49345163 0.35246545 0.21147927 0.07049309], Gamma: [0.07049309 0.21147927 0.35246545 0.49345163] (p=4) p=4: .................................................. TQA: Beta: [0.49070352 0.38165829 0.27261307 0.16356784 0.05452261], Gamma: [0.05452261 0.16356784 0.27261307 0.38165829 0.49070352] (p=5) p=5: .................................................. TQA: Beta: [0.45541597 0.37261307 0.28981016 0.20700726 0.12420436 0.04140145], Gamma: [0.04140145 0.12420436 0.20700726 0.28981016 0.37261307 0.45541597] (p=6) p=6: .................................................. TQA: Beta: [0.40582504 0.34339042 0.2809558 0.21852118 0.15608656 0.09365193 0.03121731], Gamma: [0.03121731 0.09365193 0.15608656 0.21852118 0.2809558 0.34339042 0.40582504] (p=7) p=7: .................................................. TQA: Beta: [0.36310459 0.31469064 0.2662767 0.21786275 0.16944881 0.12103486 0.07262092 0.02420697], Gamma: [0.02420697 0.07262092 0.12103486 0.16944881 0.21786275 0.2662767 0.31469064 0.36310459] (p=8) p=8: .................................................. TQA: Beta: [0.3292636 0.29052671 0.25178981 0.21305292 0.17431602 0.13557913 0.09684224 0.05810534 0.01936845], Gamma: [0.01936845 0.05810534 0.09684224 0.13557913 0.17431602 0.21305292 0.25178981 0.29052671 0.3292636 ] (p=9) p=9: .................................................. TQA: Beta: [0.30180402 0.27003518 0.23826633 0.20649749 0.17472864 0.1429598 0.11119095 0.07942211 0.04765327 0.01588442], Gamma: [0.01588442 0.04765327 0.07942211 0.11119095 0.1429598 0.17472864 0.20649749 0.23826633 0.27003518 0.30180402] (p=10) p=10: ..................................................
display_boxplots_results(tqa_p_means, tqa_p_ratios, tqa_p_approx_ratios, prefix='TQA ')
from warmstart_helper import *
ws_p_means = []
ws_p_ratios = []
ws_p_approx_ratios = []
ws_opt_epsilons = []
for p in range(1,max_p+1):
opt_epsilon = optimize_epsilon(max_cut, reps=p)
m, r, ar = start_ws_qaoa_evaluation(max_cut, eval_num=eval_num, reps=p, epsilon=opt_epsilon)
ws_p_means.append(m)
ws_p_ratios.append(r)
ws_p_approx_ratios.append(ar)
ws_opt_epsilons.append(opt_epsilon)
all_results["WarmStart QAOA"] = [ws_p_means, ws_p_ratios, ws_p_approx_ratios, ws_opt_epsilons]
ɛ=0.0 p=1: ..................................................
ɛ=0.0 p=2: ..................................................
ɛ=0.0 p=3: ..................................................
ɛ=0.0 p=4: ..................................................
ɛ=0.0 p=5: ..................................................
ɛ=0.0 p=6: ..................................................
ɛ=0.0 p=7: ..................................................
ɛ=0.0 p=8: ..................................................
ɛ=0.0 p=9: ..................................................
ɛ=0.0 p=10: ..................................................
display_boxplots_results(ws_p_means, ws_p_ratios, ws_p_approx_ratios, prefix='WarmStart ')
from recursive_qaoa_helper import *
recursive_p_means = []
recursive_p_ratios = []
recursive_p_approx_ratios = []
for p in range(1,max_p+1):
m, r, ar = start_recursive_evaluation(max_cut, eval_num=eval_num, reps=p)
recursive_p_means.append(m)
recursive_p_ratios.append(r)
recursive_p_approx_ratios.append(ar)
all_results["Recursive QAOA"] = [recursive_p_means, recursive_p_ratios, recursive_p_approx_ratios]
p=1: Cannot run evaluation 0 with p=1 .Cannot run evaluation 1 with p=1 .Cannot run evaluation 2 with p=1 .Cannot run evaluation 3 with p=1 .Cannot run evaluation 4 with p=1 .Cannot run evaluation 5 with p=1 .Cannot run evaluation 6 with p=1 .Cannot run evaluation 7 with p=1 .Cannot run evaluation 8 with p=1 .Cannot run evaluation 9 with p=1 .Cannot run evaluation 10 with p=1 .Cannot run evaluation 11 with p=1 .Cannot run evaluation 12 with p=1 .Cannot run evaluation 13 with p=1 .Cannot run evaluation 14 with p=1 .Cannot run evaluation 15 with p=1 .Cannot run evaluation 16 with p=1 .Cannot run evaluation 17 with p=1 .Cannot run evaluation 18 with p=1 .Cannot run evaluation 19 with p=1 .Cannot run evaluation 20 with p=1 .Cannot run evaluation 21 with p=1 .Cannot run evaluation 22 with p=1 .Cannot run evaluation 23 with p=1 .Cannot run evaluation 24 with p=1 .Cannot run evaluation 25 with p=1 .Cannot run evaluation 26 with p=1 .Cannot run evaluation 27 with p=1 .Cannot run evaluation 28 with p=1 .Cannot run evaluation 29 with p=1 .Cannot run evaluation 30 with p=1 .Cannot run evaluation 31 with p=1 .Cannot run evaluation 32 with p=1 .Cannot run evaluation 33 with p=1 .Cannot run evaluation 34 with p=1 .Cannot run evaluation 35 with p=1 .Cannot run evaluation 36 with p=1 .Cannot run evaluation 37 with p=1 .Cannot run evaluation 38 with p=1 .Cannot run evaluation 39 with p=1 .Cannot run evaluation 40 with p=1 .Cannot run evaluation 41 with p=1 .Cannot run evaluation 42 with p=1 .Cannot run evaluation 43 with p=1 .Cannot run evaluation 44 with p=1 .Cannot run evaluation 45 with p=1 .Cannot run evaluation 46 with p=1 ..Cannot run evaluation 48 with p=1 .Cannot run evaluation 49 with p=1 . p=2: Cannot run evaluation 0 with p=2 ..Cannot run evaluation 2 with p=2 .Cannot run evaluation 3 with p=2 .Cannot run evaluation 4 with p=2 .Cannot run evaluation 5 with p=2 .Cannot run evaluation 6 with p=2 ...Cannot run evaluation 9 with p=2 .Cannot run evaluation 10 with p=2 .Cannot run evaluation 11 with p=2 .Cannot run evaluation 12 with p=2 ..Cannot run evaluation 14 with p=2 ..Cannot run evaluation 16 with p=2 ..Cannot run evaluation 18 with p=2 .Cannot run evaluation 19 with p=2 .Cannot run evaluation 20 with p=2 .Cannot run evaluation 21 with p=2 .Cannot run evaluation 22 with p=2 .Cannot run evaluation 23 with p=2 .Cannot run evaluation 24 with p=2 .Cannot run evaluation 25 with p=2 ...Cannot run evaluation 28 with p=2 ..Cannot run evaluation 30 with p=2 .Cannot run evaluation 31 with p=2 .Cannot run evaluation 32 with p=2 .Cannot run evaluation 33 with p=2 .Cannot run evaluation 34 with p=2 .Cannot run evaluation 35 with p=2 ..Cannot run evaluation 37 with p=2 ....Cannot run evaluation 41 with p=2 .Cannot run evaluation 42 with p=2 .Cannot run evaluation 43 with p=2 .Cannot run evaluation 44 with p=2 ...Cannot run evaluation 47 with p=2 .Cannot run evaluation 48 with p=2 .. p=3: Cannot run evaluation 0 with p=3 .Cannot run evaluation 1 with p=3 .Cannot run evaluation 2 with p=3 ..Cannot run evaluation 4 with p=3 .Cannot run evaluation 5 with p=3 .Cannot run evaluation 6 with p=3 .Cannot run evaluation 7 with p=3 .Cannot run evaluation 8 with p=3 ..Cannot run evaluation 10 with p=3 .Cannot run evaluation 11 with p=3 ....Cannot run evaluation 15 with p=3 ..Cannot run evaluation 17 with p=3 .Cannot run evaluation 18 with p=3 ..Cannot run evaluation 20 with p=3 ..Cannot run evaluation 22 with p=3 ..Cannot run evaluation 24 with p=3 ..Cannot run evaluation 26 with p=3 .Cannot run evaluation 27 with p=3 .Cannot run evaluation 28 with p=3 .Cannot run evaluation 29 with p=3 .Cannot run evaluation 30 with p=3 .Cannot run evaluation 31 with p=3 .Cannot run evaluation 32 with p=3 ...Cannot run evaluation 35 with p=3 .......Cannot run evaluation 42 with p=3 ..Cannot run evaluation 44 with p=3 .Cannot run evaluation 45 with p=3 ..Cannot run evaluation 47 with p=3 ... p=4: Cannot run evaluation 0 with p=4 .Cannot run evaluation 1 with p=4 .Cannot run evaluation 2 with p=4 ....Cannot run evaluation 6 with p=4 .Cannot run evaluation 7 with p=4 .Cannot run evaluation 8 with p=4 ..Cannot run evaluation 10 with p=4 .Cannot run evaluation 11 with p=4 .Cannot run evaluation 12 with p=4 ..Cannot run evaluation 14 with p=4 ..Cannot run evaluation 16 with p=4 .Cannot run evaluation 17 with p=4 ...Cannot run evaluation 20 with p=4 .Cannot run evaluation 21 with p=4 ..Cannot run evaluation 23 with p=4 ..Cannot run evaluation 25 with p=4 .Cannot run evaluation 26 with p=4 .Cannot run evaluation 27 with p=4 ...Cannot run evaluation 30 with p=4 ...Cannot run evaluation 33 with p=4 .Cannot run evaluation 34 with p=4 .Cannot run evaluation 35 with p=4 .Cannot run evaluation 36 with p=4 .Cannot run evaluation 37 with p=4 ..Cannot run evaluation 39 with p=4 .Cannot run evaluation 40 with p=4 .Cannot run evaluation 41 with p=4 .Cannot run evaluation 42 with p=4 .Cannot run evaluation 43 with p=4 .Cannot run evaluation 44 with p=4 .Cannot run evaluation 45 with p=4 ..Cannot run evaluation 47 with p=4 ... p=5: Cannot run evaluation 0 with p=5 .Cannot run evaluation 1 with p=5 ....Cannot run evaluation 5 with p=5 ....Cannot run evaluation 9 with p=5 ...Cannot run evaluation 12 with p=5 .Cannot run evaluation 13 with p=5 .Cannot run evaluation 14 with p=5 .Cannot run evaluation 15 with p=5 ..Cannot run evaluation 17 with p=5 .Cannot run evaluation 18 with p=5 ...Cannot run evaluation 21 with p=5 ....Cannot run evaluation 25 with p=5 .Cannot run evaluation 26 with p=5 .Cannot run evaluation 27 with p=5 ..Cannot run evaluation 29 with p=5 .Cannot run evaluation 30 with p=5 .Cannot run evaluation 31 with p=5 ..Cannot run evaluation 33 with p=5 .Cannot run evaluation 34 with p=5 ..Cannot run evaluation 36 with p=5 .Cannot run evaluation 37 with p=5 .Cannot run evaluation 38 with p=5 .Cannot run evaluation 39 with p=5 ...Cannot run evaluation 42 with p=5 ...Cannot run evaluation 45 with p=5 ..Cannot run evaluation 47 with p=5 ... p=6: .Cannot run evaluation 1 with p=6 .Cannot run evaluation 2 with p=6 ..Cannot run evaluation 4 with p=6 .Cannot run evaluation 5 with p=6 .Cannot run evaluation 6 with p=6 ..Cannot run evaluation 8 with p=6 ..Cannot run evaluation 10 with p=6 ..Cannot run evaluation 12 with p=6 .Cannot run evaluation 13 with p=6 .Cannot run evaluation 14 with p=6 .Cannot run evaluation 15 with p=6 .Cannot run evaluation 16 with p=6 .Cannot run evaluation 17 with p=6 ..Cannot run evaluation 19 with p=6 .....Cannot run evaluation 24 with p=6 .Cannot run evaluation 25 with p=6 .Cannot run evaluation 26 with p=6 ....Cannot run evaluation 30 with p=6 .Cannot run evaluation 31 with p=6 ....Cannot run evaluation 35 with p=6 .Cannot run evaluation 36 with p=6 .............. p=7: Cannot run evaluation 0 with p=7 .Cannot run evaluation 1 with p=7 .Cannot run evaluation 2 with p=7 ...Cannot run evaluation 5 with p=7 .Cannot run evaluation 6 with p=7 ..Cannot run evaluation 8 with p=7 ...Cannot run evaluation 11 with p=7 ...Cannot run evaluation 14 with p=7 .Cannot run evaluation 15 with p=7 ..Cannot run evaluation 17 with p=7 .........Cannot run evaluation 26 with p=7 .Cannot run evaluation 27 with p=7 ...Cannot run evaluation 30 with p=7 .Cannot run evaluation 31 with p=7 .Cannot run evaluation 32 with p=7 ...Cannot run evaluation 35 with p=7 ...Cannot run evaluation 38 with p=7 .Cannot run evaluation 39 with p=7 .Cannot run evaluation 40 with p=7 ...Cannot run evaluation 43 with p=7 ...Cannot run evaluation 46 with p=7 ..Cannot run evaluation 48 with p=7 .Cannot run evaluation 49 with p=7 . p=8: Cannot run evaluation 0 with p=8 .Cannot run evaluation 1 with p=8 .Cannot run evaluation 2 with p=8 .Cannot run evaluation 3 with p=8 ..Cannot run evaluation 5 with p=8 .Cannot run evaluation 6 with p=8 .Cannot run evaluation 7 with p=8 ..Cannot run evaluation 9 with p=8 .......Cannot run evaluation 16 with p=8 ...Cannot run evaluation 19 with p=8 ...Cannot run evaluation 22 with p=8 ......Cannot run evaluation 28 with p=8 .Cannot run evaluation 29 with p=8 .Cannot run evaluation 30 with p=8 ..Cannot run evaluation 32 with p=8 ..Cannot run evaluation 34 with p=8 ........Cannot run evaluation 42 with p=8 .Cannot run evaluation 43 with p=8 .Cannot run evaluation 44 with p=8 ..Cannot run evaluation 46 with p=8 ...Cannot run evaluation 49 with p=8 . p=9: Cannot run evaluation 0 with p=9 ....Cannot run evaluation 4 with p=9 .....Cannot run evaluation 9 with p=9 ...Cannot run evaluation 12 with p=9 ....Cannot run evaluation 16 with p=9 ..Cannot run evaluation 18 with p=9 .Cannot run evaluation 19 with p=9 .....Cannot run evaluation 24 with p=9 ..Cannot run evaluation 26 with p=9 ........Cannot run evaluation 34 with p=9 ...Cannot run evaluation 37 with p=9 ....Cannot run evaluation 41 with p=9 .Cannot run evaluation 42 with p=9 .Cannot run evaluation 43 with p=9 ....Cannot run evaluation 47 with p=9 ... p=10: ...Cannot run evaluation 3 with p=10 .....Cannot run evaluation 8 with p=10 ..Cannot run evaluation 10 with p=10 ...Cannot run evaluation 13 with p=10 ..Cannot run evaluation 15 with p=10 .Cannot run evaluation 16 with p=10 .....Cannot run evaluation 21 with p=10 .....Cannot run evaluation 26 with p=10 ........Cannot run evaluation 34 with p=10 .Cannot run evaluation 35 with p=10 .Cannot run evaluation 36 with p=10 .Cannot run evaluation 37 with p=10 .............
display_boxplots_results(recursive_p_means, recursive_p_ratios, recursive_p_approx_ratios, prefix='Recursive ')
from recursive_ws_helper import *
ws_recursive_p_means = []
ws_recursive_p_ratios = []
ws_recursive_p_approx_ratios = []
for p in range(1,max_p+1):
opt_epsilon = ws_opt_epsilons[p-1]
m, r, ar = start_recursive_ws_qaoa_evaluation(max_cut, eval_num=eval_num, reps=p, epsilon=opt_epsilon)
ws_recursive_p_means.append(m)
ws_recursive_p_ratios.append(r)
ws_recursive_p_approx_ratios.append(ar)
all_results["Recursive WarmStrart QAOA"] = [ws_recursive_p_means, ws_recursive_p_ratios, ws_recursive_p_approx_ratios, ws_opt_epsilons]
p=1: .................................................. p=2: .................................................. p=3: .................................................. p=4: .................................................. p=5: .................................................. p=6: .................................................. p=7: .................................................. p=8: .................................................. p=9: .................................................. p=10: ..................................................
display_boxplots_results(ws_recursive_p_means, ws_recursive_p_ratios, ws_recursive_p_approx_ratios, prefix='Recursive WarmStart ')
# Save results
with open(f'comparison_simulator_{graph.name}_results.npy', 'wb') as f:
np.save(f, all_results)
from results_helper import *
means_df, ratio_df, approx_ratios_df = generate_dataframes(all_results)
means_df
| QAOA | TQA QAOA | WarmStart QAOA | Recursive QAOA | Recursive WarmStrart QAOA | |
|---|---|---|---|---|---|
| p | |||||
| 1 | -3.90 | -3.92 | -4.0 | -4.0 | -4.0 |
| 2 | -3.91 | -3.92 | -4.0 | -4.0 | -4.0 |
| 3 | -3.90 | -3.93 | -4.0 | -4.0 | -4.0 |
| 4 | -3.93 | -3.96 | -4.0 | -4.0 | -4.0 |
| 5 | -3.92 | -3.95 | -4.0 | -4.0 | -4.0 |
| 6 | -3.90 | -3.91 | -4.0 | -4.0 | -4.0 |
| 7 | -3.89 | -3.91 | -4.0 | -4.0 | -4.0 |
| 8 | -3.87 | -3.93 | -4.0 | -4.0 | -4.0 |
| 9 | -3.86 | -3.88 | -4.0 | -4.0 | -4.0 |
| 10 | -3.85 | -3.76 | -4.0 | -4.0 | -4.0 |
ratio_df
| QAOA | TQA QAOA | WarmStart QAOA | Recursive QAOA | Recursive WarmStrart QAOA | |
|---|---|---|---|---|---|
| p | |||||
| 1 | 0.97 | 0.98 | 0.0 | 0.0 | 0.0 |
| 2 | 0.98 | 0.98 | 0.0 | 0.0 | 0.0 |
| 3 | 0.97 | 0.98 | 0.0 | 0.0 | 0.0 |
| 4 | 0.98 | 0.99 | 0.0 | 0.0 | 0.0 |
| 5 | 0.98 | 0.99 | 0.0 | 0.0 | 0.0 |
| 6 | 0.97 | 0.98 | 0.0 | 0.0 | 0.0 |
| 7 | 0.97 | 0.98 | 0.0 | 0.0 | 0.0 |
| 8 | 0.97 | 0.98 | 0.0 | 0.0 | 0.0 |
| 9 | 0.97 | 0.97 | 0.0 | 0.0 | 0.0 |
| 10 | 0.96 | 0.94 | 0.0 | 0.0 | 0.0 |
approx_ratios_df
| QAOA | TQA QAOA | WarmStart QAOA | Recursive QAOA | Recursive WarmStrart QAOA | |
|---|---|---|---|---|---|
| p | |||||
| 1 | 0.97 | 0.98 | 1.0 | 1.0 | 1.0 |
| 2 | 0.98 | 0.98 | 1.0 | 1.0 | 1.0 |
| 3 | 0.97 | 0.98 | 1.0 | 1.0 | 1.0 |
| 4 | 0.98 | 0.99 | 1.0 | 1.0 | 1.0 |
| 5 | 0.98 | 0.99 | 1.0 | 1.0 | 1.0 |
| 6 | 0.97 | 0.98 | 1.0 | 1.0 | 1.0 |
| 7 | 0.97 | 0.98 | 1.0 | 1.0 | 1.0 |
| 8 | 0.97 | 0.98 | 1.0 | 1.0 | 1.0 |
| 9 | 0.97 | 0.97 | 1.0 | 1.0 | 1.0 |
| 10 | 0.96 | 0.94 | 1.0 | 1.0 | 1.0 |